// pages/home/home.js
// const app = getApp()
const app=getApp()


Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 存放轮播图数据
        swiperList: [
          {id:1,img:"/images/轮播图/OIP-C (2).jpg"},
          {id:2,img:"/images/轮播图/OIP-C (3).jpg"},
          {id:3,img:"/images/轮播图/OIP-C (1).jpg"},
          {id:4,img:"/images/轮播图/f9babcd510bf8255afe53f38282a1df.png"}
        ],
        //存放图标数据
        tubiaoList: [
          {id:1,img:"/images/页面图标/发现.png",name:"发现"},
          {id:2,img:"/images/页面图标/文学.png",name:"文学"},
          {id:3,img:"/images/页面图标/书籍.png",name:"高校书单"},
          {id:4,img:"/images/页面图标/业务图标_学生查询.png",name:"教材"},
        ],
        // 存放书籍数据
        bookList: [],
        all_bookList:[],
        id_temp:[],
        image_temp:[],
        timer : null
    },

    /**
     * 生命周期函数--监听页面加载
     */
    
    onLoad(options) {
        //写死提速
        // this.getswiperList()
        // this.gettubiaoList()
        this.getbookList()
        //预加载提速
        
        this.data.timer = setInterval(() => {
          this.preloadData();
        }, 2000); 
        
    },

    async preloadData(){
      clearInterval(this.data.timer);
      //执行一次预加载功能
      this.data.bookList.forEach(book => {
        // 在这里处理每个 book 对象
        this.data.id_temp.push(book.id);
    });
    if(this.data.id_temp.length!=0){
    //获得这些id组以后，传输到后端进行解析
    const fileList=await wx.p.request({
      url: app.globalData.url + "/preloadData/getfileList",
      method:"GET",
      data:{
        id_group: this.data.id_temp.toString()
      }
    })
    this.setData({
      image_temp:fileList.data.data
    })
    this.downloadAllImage()
  }
    },

    async downloadAllImage(){
      try {
        for (let i = 0; i < this.data.image_temp.length; i++) {
          var childName = Object.keys(this.data.image_temp[i])[0];
          var childArray = Object.values(this.data.image_temp[i])[0];
          var id_group = '';
    
          try {
            const getid = await wx.getStorage({
              key: "preload_id"
            });
            id_group = getid.data;
    
            // 处理获取到的数据
          } catch (error) {
            console.error("获取缓存失败:", error);
            wx.setStorage({
              key: "preload_id",
              data: null
            });
          }
    
          if (!id_group.includes(childName)) {
            id_group = id_group + "/" + childName;
            wx.setStorage({
              key: "preload_id",
              data: id_group
            });
    
            for (var j = 0; j < childArray.length; j++) {
              var url=childArray[j].toString();
              url=url.split(".")[0];
              const imageUrl = app.globalData.url + '/ShowImageBook/' + url;
              const parts = childArray[j].split("/");
              const filename = parts[parts.length - 1];
              const filepath = wx.env.USER_DATA_PATH + "/" + parts.slice(0, -1).join("/") + "/";
              this.isDirectory(filepath)
              try {
                const downloadedFilePath = await this.downloadImage(imageUrl, filepath + filename);
                // 在这里可以对每张图片下载成功后的处理逻辑
              } catch (error) {
                console.error("下载图片失败：", error);
                // 下载失败的处理逻辑
              }
            }
          }
        }
        // 所有图片下载完成后的处理逻辑
      } catch (error) {
        console.error("下载过程中发生错误：", error);
        // 下载过程中发生错误的处理逻辑
      }
    },
    downloadImage(imageUrl, filePath) {
      return new Promise((resolve, reject) => {
        wx.downloadFile({
          url: imageUrl,
          filePath: filePath,
          success: (res) => {
            if (res.statusCode === 200) {
              resolve(filePath); // 下载成功，将文件路径传递给 resolve
            } else {
              reject(new Error("下载失败，状态码：" + res.statusCode)); // 下载失败，reject 并传递错误信息
            }
          },
          fail: (error) => {
            reject(error); // 下载过程中发生错误，reject 并传递错误信息
          }
        });
      });
    },
    //判断路径是否存在方法
    isDirectory(op){
      wx.getFileSystemManager().access({
        path: op,
        success: (res) => {
          console.log('路径存在', res);
          // 在这里可以继续其他操作
        },
        fail: (err) => {
          console.error('路径不存在', err);
         //创建目录等
          wx.getFileSystemManager().mkdir({
            dirPath: op,
            recursive: true, // 如果目录不存在，是否递归创建
            success: (res) => {
              console.log('目录创建成功', res);
            },
            fail: (err) => {
              console.error('目录创建失败', err);
            }
          });
        }
      });
    },
    
    
    //获取轮播图数据的方法
    getswiperList() {
      wx.request({
        url: app.globalData.url+'/home/getSwiperList',
        method:"GET",
        
        success: (res)=> {
          this.setData({
            swiperList:res.data.data
          })
        }
    })
  },
  

  
  confirm: function(e) {
    var that = this;
    var dataList = [];
    var keyword = e.detail.value; // 输入的值

    if (keyword.length < 2) {
        that.setData({
            bookList: that.data.all_bookList
        });
    } else {
        var regex = new RegExp('.*' + keyword + '.*', 'i'); // 创建正则表达式，i 表示不区分大小写
        that.data.all_bookList.forEach(book => {
            if (regex.test(book.bookname)) { // 检测 bookname 是否匹配正则表达式
                dataList.push(book); // 匹配则将 book 加入 dataList
            }
        });
        that.setData({
            bookList: dataList // 更新数据
        });
    }
},  
  divece_Type(events){
    const index=events.currentTarget.dataset.index;
    //点击了发现
    if (index==0) {
      
    }
    //点击了文学
    if (index==1) {
      
    }
    //点击了高校书单
    if (index==2) {
      wx.navigateTo({
        url: '/pages/booklists/booklists',
      })
    }
    
    //点击了教材
    if (index==3) {
      
    }
  },
      
      
    
    // 获取图标数据的方法
    gettubiaoList() {
      wx.request({
        url:  app.globalData.url+'/home/getTuBiaoList',
        method:"GET",
        success: (res)=> {
          this.setData({
            tubiaoList: res.data.data
          })
        }
    })
    },
    //获取书籍数据的方法
    async getbookList() {
      const res=await wx.p.request({
        url:  app.globalData.url+'/home/getBookList',
        method:"GET",
    })
    this.setData({
      bookList:res.data.data,
      all_bookList:res.data.data
    })
    },
    //转跳书籍详情页面
    async book_detail(e){
        
      const index=e.currentTarget.dataset.index
      const id=this.data.bookList[index].id
      //先查看是否缓存
      const getid=await wx.p.getStorage({
        key:"preload_id"
      })
      var id_group=getid.data
      //缓存成功
      if(id_group.includes(id)){
      //找到缓存
        for (let i = 0; i < this.data.image_temp.length; i++) {
          var childName = Object.keys(this.data.image_temp[i])[0];
          if(childName==id){
            var childArray = JSON.parse(JSON.stringify(Object.values(this.data.image_temp[i])[0]));
            for (let j = 0; j < childArray.length; j++) {
              const str = childArray[j];
              var parts = str.split("/");
              const filepath =wx.env.USER_DATA_PATH + "/"+parts.slice(0, -1).join("/") + "/";
              const filename = parts[parts.length - 1];
              childArray[j]=filepath+filename
            }
            //传输list数组过去
            wx.navigateTo({
              url: "/pages/booK_detail/book_detail",
              success: function (res) {
                res.eventChannel.emit('bookData', { childArray });
                res.eventChannel.emit('id', { id });
              }
            });
          }
          
          
            
          }
          
        }
        //还未缓存
        else{

        }
        

        //没有缓存传输id过去

        
    },




    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
      
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
        this.getbookList()
        this.data.timer = setInterval(() => {
          this.preloadData();
        }, 2000); 
    },
    

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

})